import './RSA';
/*
  手机号码格式验证
====================================================*/
export function phoneValidate(phone) {
    if (!phone) {
        return false;
    }
    let regexp = /^(13[0-9]|147|15[0-9]|17[0-9]|18[0-9])\d{8}$/;
    return regexp.test(phone);
}
/*
  资金账户格式验证
====================================================*/
export function accountValidate(account) {
    if (!account) {
        return false;
    }
    let regexp = /^\d+$/;
    return regexp.test(account);
}
/*
  验证码格式验证
====================================================*/
export function captchaValidate(captcha) {
    if (!captcha) {
        return false;
    }
    let regexp = /^[0-9]{6}$/;
    return regexp.test(captcha);
}
/*
  图片验证码格式验证
====================================================*/
export function ticketValidate(ticket) {
    if (!ticket) {
        return false;
    }
    let regexp = /^[0-9]{4}$/;
    return regexp.test(ticket);
}

/*
  密码格式验证
====================================================*/
export function passwordValidate(password) {
    if (!password) {
        return false;
    }
    let regexp = /^[A-Za-z0-9]{6,16}$/;
    return regexp.test(password);
}
/*
  RSA加密
====================================================*/
export function RSAEncrypt(str) {
    var modulus = '008448aca526848817007c38167fc815ee7deb226a7b4664477caa30ab381b5c3566171b03218fec8e4999b01b81815e4a6a681c2d9d89504bc6bd3acd34c06c236a94d17335621ac58d30d6a2f3cebc54feedfce7dd0e3da83f72c6308a6b5e35a6e14e183356c011a4bc67426166bee991407de5aa627163ae11fcb6068bfa0b';
    var exponent = '010001';
    var key = RSAUtils.getKeyPair(exponent, '', modulus);
    str = RSAUtils.encryptedString(key, str);
    return str;
}

/*
  获取设备类型
====================================================*/
export function getDeviceType(){
    let iosTag = "Mac OS X",
        androidTag = "Android";
            
    let userAgent = navigator.userAgent;

    let isIOS = userAgent.indexOf(iosTag)>0,
        isAndroid = userAgent.indexOf(androidTag)>0,
        isWeb = false;
    if (!isIOS && !isAndroid) {
        isWeb = true;
    }
            
    return { isIOS, isAndroid, isWeb };
}

/*
  兼容数据API地址
====================================================*/
export function formatApiUrl(url){
    let { isIOS, isAndroid, isWeb, accesscls="android" } = getDeviceType();
    if (isIOS === true) {
        accesscls = "iphone";
    }

    if (url.indexOf("?")>0) {
        url = url + "&accesscls="+accesscls;
    }else{
        url = url + "?accesscls="+accesscls;
    }
    return url;
}

/*
  获取股票所属区域
====================================================*/
export function getStockArea(stockcode){
    let stockarea = "";
    if (stockcode) {
        if (stockcode.indexOf("6") === 0) {
            stockarea = "SH";
        }else{
            stockarea = "SZ";
        }
    }
    return stockarea;
}

/*
  生成指定长度随机数
====================================================*/
export function makeRandomCode(len){
    len = len || 32;
　　var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
　　var maxPos = $chars.length;
　　var result = '';
　　for (var i = 0; i < len; i++) {
        result += $chars.charAt(Math.floor(Math.random() * maxPos));
　　}
　　return result;
}

/*
  获取URL地址栏参数
====================================================*/
export function getUrlParam(name) {
    let reg = new RegExp("(^|&|#|/?)" + name + "=([^&]*)(&|$)", "i");
    let r = window.location.href.substr(1).match(reg);
    if (r != null) {
        let result = unescape(r[2]);
        if (result.indexOf('#') > 0) {
            result = result.slice(0, result.indexOf('#'));
        };
        return result;
    }
    return null;
};

/*
  时间格式化
====================================================*/
export function DateFormater(date, fmt = 'yyyy-mm-dd HH:mm:ss'){

    var formatDate = date;
    if(typeof date === "undefined"){
        formatDate = new Date();
    }

    if(typeof date === "string"){
        formatDate = new Date();

        /* km
           低版本ios提供的setTime方法，仅支持yyyy/MM/dd HH:mm:ss格式
          ===========================================================*/
        date = date.replace(/-/g,"/");

        formatDate.setTime(Date.parse(date));
    }

    var o = {
        "M+": formatDate.getMonth() + 1,
        "d+": formatDate.getDate(),
        "h+": formatDate.getHours(), 
        "m+": formatDate.getMinutes(),  
        "s+": formatDate.getSeconds(),  
        "q+": Math.floor((formatDate.getMonth() + 3) / 3),   
        "S": formatDate.getMilliseconds() 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (formatDate.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

/*
  km：ECMAScript2015，已提供``语法。这个相当于废了
====================================================*/
String.format = function () {
    var args = arguments;
    return args[0].replace(/\{(\d+)\}/g, function (m, i) { return args[i * 1 + 1]; });
};